package com.hmall.item.controller;


import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hmall.api.item.dto.ItemDTO;
import com.hmall.common.domain.PageDTO;
import com.hmall.item.domain.po.Item;
import com.hmall.item.domain.query.ItemPageQuery;
import com.hmall.item.service.IItemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;

/**
 * 搜索相关接口
 *
 * @author Zhy
 * @version 1.0
 * @date 2025-03-18 11:41
 */
@Api(tags = "搜索相关接口")
// @RestController
// @RequestMapping("/search")
@RequiredArgsConstructor
public class SearchController {

	private final IItemService itemService;

	@ApiOperation("搜索商品")
	// @GetMapping("/list")
	public PageDTO<ItemDTO> search(ItemPageQuery query) {
		// 分页查询
		Page<Item> result = itemService.lambdaQuery()
			.like(
				StrUtil.isNotBlank(query.getKey()),
				Item::getName,
				query.getKey()
			)
			.eq(StrUtil.isNotBlank(query.getBrand()), Item::getBrand, query.getBrand())
			.eq(StrUtil.isNotBlank(query.getCategory()), Item::getCategory, query.getCategory())
			.eq(Item::getStatus, 1)
			.between(query.getMaxPrice() != null, Item::getPrice, query.getMinPrice(), query.getMaxPrice())
			.page(query.toMpPage("update_time", false));
		// 封装并返回
		return PageDTO.of(result, ItemDTO.class);
	}
}
